home *** CD-ROM | disk | FTP | other *** search
/ Aminet 2 / Aminet AMIGA CDROM (1994)(Walnut Creek)[Feb 1994][W.O. 44790-1].iso / Aminet / dev / misc / amul900.lha / Updates.AMUL890 < prev   
Encoding:
Text File  |  1992-05-04  |  30.2 KB  |  848 lines

  1. = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = =
  2.  
  3.       ==================================================================
  4.       ==±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±==
  5.       ==±±±±####±±±±###±±±±±###±±###±±±###±####±±±±±±±±±±±          ±±==
  6.       ==±±±##°°##±±°°###±±±###±±°##±±±°°##°°##±±±±±±±±±±±± Amiga    ±±==
  7.       ==±±##±±°°##±±°#########±±°##±±±±°##±°##±±±±±±±±±±±± Multi-   ±±==
  8.       ==±°##±±±°##±±°#########±±°##±±±±°##±°##±±±±±±±±±±±± User     ±±==
  9.       ==±°########±±°##°###°##±±°##±±±±°##±°##±±±±±±±±±±±±  games   ±±==
  10.       ==±°##°°°°##±±°##°°°±°##±±°°##±±±##±±°##±±±±±#±±±±±± Language ±±==
  11.       ==±°###±±###±±####±±±####±±°#######±±#########±±±±±±          ±±==
  12.       ==±°°°±±°°°±±°°°°±±±°°°°±±±°°°°°°°±±°°°°°°°°°±±±±±±±±±±±±±±±±±±±==
  13.       ==±============================================================±==
  14.       ==±=           Updates From Version 0.865 -> 0.890            =±==
  15.       ==±============================================================±==
  16.       ==±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±==
  17.       ==================================================================
  18.  
  19.  
  20. = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = =
  21.  
  22.  
  23.                  Version 0.890 Detailed Update Notes & Examples
  24.                  ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  25.  
  26.                                    INDEX
  27.                                    =====
  28.  
  29.  
  30.     [1]    Update Brief
  31.     [1.1]     Update Information
  32.     [1.2]     Update List & Notes
  33.  
  34.     [2]    Title.Txt
  35.     [2.1]     Title.Txt/RankScale=
  36.     [2.2]     Title.Txt/TimeScale=
  37.  
  38.     [3]    Language
  39.     [3.1]     Language/Conditions
  40.     [3.2]     Language/Actions
  41.     [3.3]     Language/Other Changes
  42.     [3.4]     Language/Examples
  43.  
  44.     [4]    Next version...
  45.  
  46. = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = =
  47. =                              B r i e f i n g                                =
  48. = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = =
  49.  
  50.                        Version 0.890 updates in Brief
  51.                        ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  52.  
  53. [1] Update Brief
  54.  
  55.     Version 0.8.90 of AMul has seen some fiddly changes. Not a great
  56.     deal happened in this version; most of it is the result of some
  57.     severe play testing of an adventure called 'Valley'. The only
  58.     bug I am currently aware occurred under KickStart 2.0, and was a
  59.     guru 81000005 (Corrupted memory list). This I am tracing as fast
  60.     as my bony fingers will type!
  61.  
  62.     The next couple of versions will see some MAJOR jiggling to suit
  63.     my adventure, and to increase the multi-user interactive power!
  64.  
  65. [1.1] Update Information
  66.  
  67. * Daemons can now call themselves.
  68. * AMUL now understands adjectives.
  69. * Combat bugs fixed.
  70. * AMan support for external utilities now initialized...
  71. * Bug where screen titles sometimes got obliterated (WB 2.0 only) fixed.
  72. * Players can now have a pre-rank and post-rank description.
  73. * New action 'syntax' to let YOU reset NOUN1 and NOUN2, reduce code size!
  74. * Lang.Txt can now contain sub routines using the DO action.
  75. * 'Interact' action allows you to interact more freely.
  76. * FailParse/AbortParse/FinishParse bug fixed.
  77. * Treatas improved.
  78. * More speed increases!
  79. * Adjectives 100%.
  80. * It is now possible to invoke a 'remote' daemon.
  81. * AutoExits installed.
  82. * Cured the weird line-wrap problem in the invent command.
  83. * Fixed some player-movement problems.
  84. * "Follow" facilities implemented.
  85. * The "@me has arrived" and "@me has left" for players can be changed!
  86. * Random VALUES implemented!
  87. * Internal parameter editor for users!
  88. * verb <noun list> now supported, eg: get noun1,noun2,noun3,noun4,noun5!
  89. * User-definable screen length, screen width and redo-character!
  90. * Rank & Time scaling (scales value of certain objects).
  91. * Actions RESPOND and ERROR introduced to reduce Lang.Txt/Travel.Txt size.
  92. * Bug in the SYNTAX command fixed.
  93. * "-> treatas" bug fixed.
  94. * New object fixed flag, 'SMELL'.
  95. * Scenery objects with a description (eg "It is raining") are now shown when
  96.   a player views a HIDEAWAY room's description.
  97. * Blind players can now see their inventory.
  98. * Blind players can no-longer see their own inventory.
  99. * New Verb flag !!  DREAM!  Indicates players can execute this whilst asleep.
  100. * Players can no-longer execute ALL commands whilst asleep.
  101. * NEW INTERNAL USER-PARAMETER ADJUSTMENT COMMANDS! TYPE /? FOR LIST!
  102. * Daemon bugs in AMan now cured... Multiple-daemons finally work!
  103. * New variables: MYSCORE, MYSCTG and MYSTR.
  104. * ANOTHER SysMsg -- Description of a Death room in the Exits list.
  105. * Compiler now sets Scenery objects' weight as ( Top Rank Strength + 1 )
  106. * New conditions: Full <stat> <player> and Time <number>
  107. * New variables: lastroom, lastdir, lastverb.
  108. * Condition: FIRE <object> - TRUE if the object has the new 'fire' flag.
  109. * Recompiled using the Lattice 'C' -O optimization  option, faster and
  110.   smaller code!
  111. * The SHOWFIRE feature (object flag 'fire') has been 100% installed.
  112. * If you want to open a PROPER shared serial port, AMUL now lets you.
  113. * If a player dies in a DEATH room with no DMOVE flag, objects go to the
  114.   players LAST room.
  115. * New room flag PEACEFUL to prevent fighting.
  116. * New conditions: Magic, Spell, and Health.
  117. * New Actions: Toprank, Deduct, Damage and Repair.
  118. * New spell SINVIS.
  119. * New announcement group ALL.
  120. * The HURT command has been totally erased as it's no longer needed.
  121. * '-p' option for using Paragon door interpreter removed! If you want to
  122.   run AMUL through a BBS, use the -X option...
  123. * AMAN -r no-longer causes a system lockup.
  124. * New AMAN command : AMAN -r [<delay to reset>] resets in <delay> seconds
  125.   -- Note ... This gives the users warning of the coming reset.
  126. * New AMAN command : AMAN -x <time in seconds> extends current game time
  127.  
  128. [1.2] Update List & Notes
  129.  
  130.      Conditions:
  131.  
  132.     Condition        Description
  133.     =============================================================
  134.     noun1 <noun>        TRUE if noun1 = <noun>
  135.     noun2 <noun>        TRUE if noun2 = <noun>
  136.     autoexits        TRUE if autoexits enabled
  137.     debug            TRUE if debug mode enabled
  138.     attrib <stat> <numb>    -> stat <stat> <player> <number>
  139.     full <stat> <player>    TRUE if players STAT is at maximum
  140.     time <numb>        Evaluates number of seconds till reset
  141.     inc <object>        Increments objects state - FALSE if can't
  142.     dec <object>        Decrements objects state - FALSE if can't
  143.     lit <object>        Test if the object is LIT
  144.     fire <object>        Tests for the new 'fire' flag on an object
  145.     health <player> <numb>    Returns the health of player in %.
  146.     magic <level> <pts> <%>    Checks for cast spell. Players rank MUST be
  147.                                 atleast <level>, must have atleast <pts>
  148.                                 magic points and % is the percentage chance
  149.                                 a player at level <level> has of success. The
  150.                                 %age is scaled up the ranks with TopRank
  151.                                 players getting 100%.
  152.     spell <player> <%>    Checks players defence %. Used with magic.
  153.  
  154.  
  155.      Actions:
  156.  
  157.     Action            Description
  158.     =============================================================
  159.     syntax <n1> <n2>    sets noun1 & noun2
  160.     setpre x <text>        Sets a players pre-rank description
  161.     setpost x <text>    Sets a players post-rank description
  162.     setarr x <text>        Message displayed when player "arrives".
  163.     setdep x <text>        Message displayed when player leaves.
  164.     do <verb>        Do subroutine. Continue unless FAILPARSE
  165.                 executed.
  166.     interact <player>    Flags player as currently undergoing
  167.                 interaction from you. Stop ACTION and
  168.                 ANNOUNCEs getting to him from you.
  169.     senddaemon <player> <daemon> <time>
  170.                 Sends the daemon to AMan to be processed
  171.                 by another user. Set time to 0 if you
  172.                 simply want to make the remote user
  173.                 execute a command!
  174.     AutoExits On|Off    Enable/disable autoexits.
  175.     Respond <message>    Same as REPLY but also does an ENDPARSE.
  176.     Error <message>        Same as RESPOND but includes a FAILPARSE.
  177.     combat            ** fixed **
  178.     burn <object>        Sets the LIT flag of an object
  179.     douse <object>        Extinguishes the object
  180.     inc <object>        Same as condition but no return
  181.     dec <object>        Same as condition but no return
  182.     toprank            Make the player the toprank.
  183.     deduct <player> <%>    Reduces players score by percent.
  184.     damage <object> <numb>    Inflict points of damage on object.
  185.     repair <object> <numb>    Repair points of damage on object.
  186.  
  187.  
  188.      Room Flags:
  189.  
  190.     Flag            Description
  191.     =============================================================
  192.     PEACEFUL        Stops fighting in this location.
  193.  
  194.  
  195.      Object FIXED Flags:
  196.  
  197.     Flag            Description
  198.     =============================================================
  199.     WEAPON            Is now a STATE flag.
  200.     FIRE            Says "The <noun> is on fire." when LIT.
  201.                 also, the LIT flag is ported between
  202.                 states. Use this flag for, say, lighting
  203.                 openable objects such as doors!
  204.     SMELL            Indicates blind players ONLY see this.
  205.  
  206.  
  207.      Slot labels: (As of now called Variables)
  208.  
  209.     Label            Description
  210.     =============================================================
  211.     ~<number>        Random number between 0 and <number>
  212.     `<number>        Random number between num*.5 and num*1.5
  213.                 eg `100 could be 50 to 150.
  214.     myscore            Players score
  215.     mysctg            Points scored this game
  216.     mystr            Players strength
  217.     lastroom        Last room player was in
  218.     lastdir            Last travel verb player used (direction)
  219.     lastverb        Last verb the player used
  220.  
  221.  
  222.      System Messages:
  223.  
  224.     Number            Usage & Example
  225.     =============================================================
  226.     $71            When a Death room is listed by Exits
  227.             eg    Certain death!
  228.     $72            When a player tried to fight in a 'Peaceful' room.
  229.     $73            When a player tried to cast a spell above his level.
  230.     $74            When a player lacks the required magic points.
  231.  
  232.      Escape Codes:
  233.  
  234.     Code            Description
  235.     =============================================================
  236.     @fm            The player following me
  237.     @mf            The player I am following
  238.     @mg            My current magic points.
  239.  
  240.  
  241.      The following files will require attention:
  242.  
  243.     File            Reason(s)
  244.     =============================================================
  245.     Title.Txt        Add RankScale= and TimeScale= entries.
  246.     Lang.Txt        You can now remove those HORRIBLE
  247.                 chunks of code where you have a
  248.                 dozen syntax=verb noun=x noun=y
  249.                 where you are processing the
  250.                 commands for each are a single
  251.                 line... You can now check for
  252.                 noun1 and noun2, so code can change
  253.                 dramatically!
  254.                 You can now change the syntax of
  255.                 the users input. This means you
  256.                 can scrap those long portions of
  257.                 code where you repeat the same
  258.                 process for 'verb noun player' as
  259.                 you do for 'verb player noun'.
  260.                 You can now have 'subroutines'.
  261.                 Size can be DRASTICALLY reduced by
  262.                 replacing lots of <condition> reply <text>
  263.                 followed by & endparse with RESPOND and/or
  264.                 ERROR. See below.
  265.                 Replace ATTRIB with STAT command.
  266.                 Replace HURT with SUB command.
  267.     Objects.Txt        Your "adj=" statements now have a
  268.                 purpose in life! The AMUL parser will
  269.                 now understand these, though they are
  270.                 optional.
  271.  
  272.       Changes to AMAN command line:
  273.  
  274.     Switch            Changes
  275.     ===================================================================
  276.     -r            Now accepts "aman -r" or "aman -r <number>"
  277.                 <number> allows you to specify the number
  278.                 of seconds BEFORE the game should reset.
  279.                 Users are warned of the pending reset.
  280.     -x            Allows you to extend current game time.
  281.                 Essential if you have a user with 50,000
  282.                 points of hard earned treasure who needs
  283.                 an extra 10 seconds to score his points!
  284.  
  285.         AMAN -r [<number>] | -x <number> | -k | [-q] <path name>
  286.  
  287.  
  288.     Bug Fixes, Changes and Cures
  289.     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  290.  
  291.     o Daemons can now call themselves. Verbs can also reparse themselves
  292.      using a command, such as: - treatas exampleverb
  293.  
  294.     o Under KickStart 2.0 AMUL would regularly lose the screen title
  295.      when displaying objects. This has been cured.
  296.  
  297.     o AMUL now understands adjectives!!!! If the player types:
  298.  
  299.         > get match
  300.     or    > get safety match
  301.  
  302.       He will pick up the nearest match with adj=safety. If there are
  303.      several matches around, and the player specifies <adj> <noun> he
  304.      will get the one specified; ie it will ONLY match "safety match"
  305.      with itself, so "unlit match" wouldn't work.
  306.  
  307.     o Players can now have pre- and post- -rank descriptions, eg:
  308.             "Fritter the witch"
  309.       with 'despicable' as pre-rank description becomes:
  310.         "Fritter the despicable witch is here."
  311.       and
  312.             "Robert the Lord"
  313.       with post-description 'of Nottingham' as post-description is:
  314.             "Robert the Lord of Nottingham".
  315.       Players can have BOTH a pre- and post- description.
  316.  
  317.     o Players arrival & departure strings can now be changed dynamically,
  318.      changing the way they appear to move around in the game. For
  319.      instance, a drunken player would stagger off rather than just
  320.      leave. So:
  321.         reply "The world spins round!"
  322.         setdep "Staggering wildly, @me has just left."
  323.         setarr "With some difficulty, @me has just arrived."
  324.      When player 'Fritter' leaves a room:
  325.         Staggering wildly, Fritter has just left.
  326.  
  327.     o When displaying your inventory, if your inventory was more than a
  328.      line long, the word wrap didn't work until the 10th character on
  329.      the second line. This has been cured, and the inventory is now
  330.      displayed far more quickly.
  331.  
  332.     o The following:
  333.         ---Cut---
  334.         * north
  335.         Large room.
  336.         You have just entered the large room.
  337.         Bill the novice is here, carrying book.
  338.         *
  339.         Bill the novice has just arrived.
  340.         ---End---
  341.       would happen when two players moved from room to room at the same
  342.       time. Players are now marked as 'in transit' and don't appear on
  343.       the description until they have actually finished arriving. 8-)
  344.  
  345.     o Prefixing a value in Lang.Txt, Mobiles.Txt or Travel.Txt with a
  346.      tilde (~) or backtick (`) will result in the value being randomized
  347.      at run time, each time it is used. ~<number> means A VALUE BETWEEN
  348.      0 AND NUMBER. `<number> means A VALUE BASED ON NUMBER. Effectively,
  349.      `<number> is ( ~<number> ) + <number>/2. So, `100 is (~100)+50.
  350.  
  351.     o Two new options in Title.Txt:
  352.         RankScale=X TimeScale=Y
  353.       eg    RankScale=40 TimeScale=60
  354.  
  355.       Scaling affects the value of an object depending on how long since
  356.      last reset and how high the players rank.
  357.  
  358.       RankScale is the DEDUCTION IN VALUE of objects for TOP RANK players,
  359.      with the value INCREASING for each subsequent lower rank.
  360.       TimeScale is a little more complex. It is based on the amount of
  361.      gametime used. For the last 10% of the game objects are worth their
  362.      full value to Rank 1 players. The value specified here is the INITIAL
  363.      scaling factor. For example. Using the above TimeScale value (60),
  364.      to a Rank 1 player in the first minute of the game, an object with
  365.      Value=100 would be worth ( 100 - 60 % ) = 40 points. After 50
  366.      minutes it would be worth ( 100 - 30 % ) = 70 points. After 100
  367.      minutes the object would be worth its full value (100 points).
  368.  
  369.       Here is an example of Rank and Time scaling effects...
  370.  
  371.            GameTime = 110, Ranks = 5, RankScale = 40, TimeScale = 100
  372.  
  373.               Rank Scale                Time Scale
  374.         Rank    Deduct %         Time      Deduct %
  375.         -------+-------             --------+---------
  376.           0    |    0%                0    |    100%
  377.                   1    |    8%                     25    |     75%
  378.                   2    |   16%                     50    |     50%
  379.                   3    |   24%                     75    |     25%
  380.                   4    |   32%                    100    |      0%
  381.                   5    |   40%                    110    |      0%
  382.  
  383.     o Knock a fifth out of lang.txt!
  384.  
  385.       Two new commands, RESPOND and ERROR replace the need for code
  386.      such as:
  387.  
  388.         if infl me blind reply "You can't see a thing!"
  389.         & endparse
  390.  
  391.       Instead you would now use:
  392.  
  393.         if infl me blind respond "You can't see a thing!"
  394.  
  395.       Respond and Error work in EXACTLY the same way as REPLY or MESSAGE
  396.       but they both execute an ENDPARSE and Error executes an additional
  397.       FAILPARSE. Make sure you make use of these, as they can MASSIVELY
  398.       reduce compile times, parser speed and disk usage!
  399.  
  400.     o A bug where "-> treatas <verb>" would not process has been
  401.      cured. What happened was that the 'endparse' part of ->, &> or
  402.      else> would be processed before the new verb was reached. However,
  403.      you should not NEED to tell AMUL to execute an EndParse following
  404.      a treatas command, since the parseing restarts at a different point
  405.      after its execution!
  406.  
  407.     o Some work has been done on blind players.
  408.       (a) They can no-longer see room descriptions.
  409.       (b) They can now see their own inventories.
  410.       (c) New objects flag 'SMELL' provided to allow blind players
  411.           to know ROUGHLY where they are.
  412.       ONLY a blind player can see a SMELL object, and they should
  413.       usually be made into a scenery object.
  414.  
  415.     o In a HideAway room, SCENERY objects are now displayed (eg rain
  416.      or some form of weather).
  417.  
  418.     o There is a new VERB flag "DREAM". Any verbs not marked with this
  419.      flag cannot be executed by a player who is asleep. It is recommended
  420.      that you make verbs WHO, QUIT, SCORE, SAVE and WAKE "DREAM" verbs.
  421.      Any others should be left to the system, the response being:
  422.         "You can't do anything until you wake up!"
  423.  
  424.     o Attrib has been replaced with STAT, the following changes would be
  425.      required:
  426.         attrib score <50
  427.      to:
  428.         stat score me <50
  429.  
  430.     o The compiler now AUTOMATICALLY sets the weight of a Scenery object
  431.      to the maximum strength of a top-rank player + 1. This means you
  432.      could have an entry such as:
  433.         verb=move
  434.         syntax=verb noun
  435.             noun1 bookcase    treatas open
  436.             noun1 slab    treatas open
  437.             stat str me <^noun respond "Its too heavy for you to move."
  438.             else respond "Nothing special happens, sigh."
  439.        "<^noun" means LESS THAN THE WEIGHT OF THE NOUN, so the
  440.         stat str me <^noun
  441.        means: If the player's strength is less than the weight of the
  442.               object...
  443.  
  444.     o To run AMUL with Paragon BBS Software or other such systems, you
  445.      will need a shared 'getty' serial device. This works in the same
  446.      way as World Empire in that it simply takes the settings from the
  447.      'parent' program.
  448.  
  449.       To do it from AMUL, use the -S option, as per usual, but the
  450.      format is SLIGHTLY different:
  451.  
  452.         amul -s 0 <device name> <unit>
  453.  
  454.       Unfortunately with Paragon the first character entered by the
  455.      user is lost... When I figure that one out, I'll cure it 8-).
  456.  
  457.     o When a player walks into a DEATH room which has no DMOVE flag,
  458.      AMUL would originally drop the players objects into the Death room.
  459.      It now returns the objects to the room the player LEFT from.
  460.  
  461.     o Dexterity now moves up and down as does strength thus making
  462.      combat more realistic.
  463.  
  464.     o Combat hit and damage calculations are now ALOT more reliant on
  465.      the players dexterity and strength, therefore making combat more
  466.      realistic with regard to spells etc.
  467.  
  468.     o When wielding a weapon the damage done is now random for the weapon
  469.      plus the players strength damage instead of it all being random. This
  470.      fixes the bug where a player wielding a weapon does less than one
  471.      without.
  472.  
  473.     o Magic points has been added to the score commands.
  474.  
  475.     o 'AMAN -r' with no-users online no-longer causes a system lockup.
  476.  
  477.     o 'AMAN -r' can now accept an optional extra parameter, the delay
  478.      before resetting the game. Users are WARNED of the pending reset.
  479.  
  480.     o 'AMAN -x <seconds>' extends the time remaining on the current
  481.      game. Users are notified of the increase.
  482.  
  483. -------------------------------------------------------------------------------
  484. -------------------------------------------------------------------------------
  485.  
  486.  
  487. = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = =
  488.                                    D e t a i l
  489. = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = =
  490.  
  491.  
  492. -------------------------------------------------------------------------------
  493. -------------------------------------------------------------------------------
  494.  
  495.  
  496. [3]  Language
  497.  
  498. [3.1] Conditions
  499.  
  500.         Condition: noun1 <noun>
  501.                noun2 <noun>
  502.  
  503.     TRUE if noun1/noun2 is set to <noun>. Use this when you want to
  504.     trap a single noun part way through a complex syntax statement
  505.     where the resulting code is only a single line, thus:
  506.         verb=light
  507.         syntax=verb noun=brand noun
  508.             - checknear noun2
  509.             - checknear noun1
  510.             if noun2 is wand then skip 2
  511.             if ! flamable noun2 then reply "You can't use the @n2 to light it!"
  512.             & endparse
  513.             < etc >
  514.     is FAR less messy than the old AMUL'S would have required!
  515.  
  516.  
  517.  
  518.  
  519. [3.2] Actions
  520.  
  521.         Action: syntax <noun1> <noun2>
  522.  
  523.     Sets the values for noun1 and noun2. Please note... You MUST
  524.     specify a valid noun. Either NONE, NOUN1, NOUN2 or an actual
  525.     noun name. PLAYER, TEXT or VERB cannot be specified. Using
  526.     NOUN1 or NOUN2 will also transfer the correct word type.
  527.     eg:    verb=shoot
  528.         syntax=verb player noun
  529.             if noun2 is crossbow then syntax noun1 none
  530.             & skip 100    ; Skips to next block...
  531.             -> reply "You can't use THAT to shoot at someone, imbecile!"
  532.         syntax=verb player
  533.             ! carrying crossbow then .....
  534.     The parser DOES process the "verb player" section IF you specify
  535.     crossbow are your weapon.
  536.  
  537.  
  538.         Action: setpre <player> <text>
  539.  
  540.     Sets the players pre-rank description. This allows you to
  541.     call players silly things.
  542.     eg:    setpre me "dragonfly-slaying"
  543.             (player becomes '@me the dragonfly-slaying @nr')
  544.     The pre-rank description can be display with the escape code "@d1"
  545.  
  546.  
  547.         Action: setpost <player> <text>
  548.  
  549.     Sets the players post-rank description. This allows you to
  550.     call players silly things.
  551.     eg:    setpost me "without a clue"
  552.         (player becomes '@me the @mr without a clue')
  553.     The pre-rank description can be display with the escape code "@d2"
  554.  
  555.  
  556.         Action: setarr <player> <text>
  557.  
  558.     Sets the string sent to OTHERS when the player arrives in a room.
  559.     eg:    setarr player "@me has just arrived, reeking of garlic!"
  560.  
  561.  
  562.         Action: setdep <player> <text>
  563.  
  564.     Sets the string sent to OTHERS when the player leaves a room.
  565.     eg:    setdep me "With an obvious limp, @me has just left."
  566.  
  567.  
  568.         Action: respond <text>
  569.  
  570.     Sends the message to the player and then executes an ENDPARSE.
  571.     eg:    if infl me blind respond "You can't see a thing."
  572.     replaces:
  573.         if infl me blind reply "You can't see a thing."
  574.         & endparse
  575.  
  576.     NOTE: If you had something like:
  577.  
  578.         if infl me blind reply "You can't see a thing."
  579.         else reply "OK, you flick the light switch."
  580.         & action others "You hear a 'CLICK!' as someone flicks a light switch!"
  581.         &> state lights 0
  582.  
  583.           You should use RESPOND (or ERROR) here and remove the conditions
  584.           infront of the rest of the lines. This will improve response
  585.           of the game online.
  586.  
  587.  
  588.         Action: error <text>
  589.  
  590.     Sends the message to the player and then executes an FAILPARSE.
  591.     eg:    if !nearto player error "I can't see @n1 here!"
  592.     replaces:
  593.         if !nearto player reply "I can't see @n1 here!"
  594.         & failparse
  595.  
  596.     NOTE: See the notes for RESPOND.
  597.  
  598.  
  599. [3.3] Other Changes
  600.  
  601.     Bug Fixes and Cures
  602.     ~~~~~~~~~~~~~~~~~~~
  603.  
  604.     #1    A minor bug has been cured... Richard's fabled '.combat'
  605.         daemon was a no-goer. [That'll teach you to document
  606.         things you haven't tested, Mr Pike!]. The reason was
  607.         simple to cure - but neither of us spotted it till I
  608.         tried some of Richards stuff... The daemon was:
  609.  
  610.         verb=.combat
  611.         syntax=verb any
  612.             - combat
  613.             - start .combat 5
  614.  
  615.         This did NOT work, for the simple reason that you 
  616.         couldn't call a verb/daemon from itself. Until the
  617.         end of the verb was reached, the verb wasn't actually
  618.         added to the compile table. The simple cure was to
  619.         add a check for the verb held in the work-space. This
  620.         HAS cured it. So you CAN now do the above. As for the
  621.         combat routines; well they still need a bitta fixing.
  622.  
  623.  
  624. [3.4] Examples
  625.  
  626. [3.4.1] Using pre- and post- rank descriptions.
  627.  
  628.     verb=set_name
  629.     syntax=verb player text
  630.         toprank setpre player text
  631.         & endparse
  632.         myrank <3 reply $38    ; only rank 3 or above can do it.
  633.         & endparse
  634.         setpre player text
  635.  
  636. [3.4.2] Streamlining a game with RESPOND and ERROR.
  637.  
  638.     Two more commands have been added in the struggle to reduce size,
  639.     compile time and processing time of games as they get bigger and
  640.     bigger! The most common sequence of commands in AMUL games seems
  641.     to be relating to telling players about their mistakes, stupidity
  642.     or otherwise reporting back. The bulk of games actually do very
  643.     little, but since 'text' is the only way the player can sense his
  644.     environment it is essential that there is plenty, but not too
  645.     much, of it.
  646.  
  647.     THE most common sequence is generally:
  648.  
  649.         <condition> reply <text>
  650.         & endparse
  651.     or
  652.         <condition> reply <text>
  653.         & failparse.
  654.  
  655.     It should be noted here that FAILPARSE SHOULD be used by budding
  656.     games developers. When mobiles and object-classes are installed
  657.     they will tell the game when to stop trying to do recursive parses,
  658.     for example:
  659.  
  660.         > PUT ALL IN BAG
  661.  
  662.     Although you can't actually do this yet, what the game WILL do is
  663.     search for all the objects which match the top element of 'put's
  664.     ?CHAE string and attempt to execute
  665.  
  666.         > PUT <noun> IN BAG
  667.  
  668.     So if the player was carrying "BRICK, BAT, BALL" it would try
  669.     PUT BRICK IN BAG, PUT BAT IN BAG, PUT BALL IN BAG. If the bag
  670.     is closed, you don't want to tell the player three times:
  671.  
  672.         > put all in bag
  673.         brick: The bag is closed, you'll have to open it first!
  674.         bat: The bag is closed, you'll have to open it first!
  675.         ball: The bag is closed, you'll have to open it first!
  676.  
  677.     Messy, huh? So... Your code might look something like, using the
  678.     OLD commands... (This example assumes objects are open in state 0)
  679.  
  680.         ----Start----
  681.         verb=put
  682.         syntax=verb noun noun
  683.             checknear noun2
  684.             checknear noun1
  685.             ! container noun2 reply "You can't put anything in the @n2!"
  686.             & failparse
  687.             ! canfit noun1 in noun2 then reply "There isn't enough room in the @n2."
  688.             & endparse
  689.             ! opens noun2 skip 2
  690.             ! state noun2 0 reply "The @n2 is closed, you'll have to open it first!"
  691.             & failparse
  692.             reply "The @n1 fits nicely into the @n2."
  693.             put noun1 into noun2
  694.         -----End-----
  695.  
  696.     Note. When there is not enough room an ENDPARSE is used. The next
  697.     object may be smaller and thus may fit inside <noun2>. In the
  698.     other two occasions it is obvious that there is no point to try
  699.     a second object. However, using the new ERROR and RESPOND commands
  700.     the code would be reduced to:
  701.  
  702.         ----Start----
  703.         verb=put
  704.         syntax=verb noun noun
  705.             checknear noun2
  706.             checknear noun1
  707.             ! container noun2 error "You can't put anything in the @n2!"
  708.             ! canfit noun1 in noun2 then respond "There isn't enough room in the @n2."
  709.             ! opens noun2 skip 2
  710.             ! state noun2 0 error "The @n2 is closed, you'll have to open it first!"
  711.             reply "The @n1 fits nicely into the @n2."
  712.             put noun1 into noun2
  713.         -----End-----
  714.  
  715.     Neat, huh?
  716.  
  717. [3.4.3] Using full...
  718.  
  719.     Goal: To award a user with 1 point of stamina after every 5 seconds
  720.           of sleep.
  721.  
  722.     Explanation:
  723.     After a fight, either one player will be dead, or there will be two
  724.     living players on reduced stamina. These two will be prone to attack
  725.     from other players (and later on mobiles). There needs to be some
  726.     way for players to recover their stamina.
  727.  
  728.     The natural thing to do is to sleep. If you decide to implement this
  729.     into your own games, you may wish to vary the ratio depending on the
  730.     style of game. In this example we use a 1 stam/5 second ratio. Don't
  731.     use a daemon which operates every second or so; this will consume
  732.     massive quantities of processor time! 8-(
  733.  
  734.     ----Start----
  735.     verb=.recsleep
  736.     syntax=verb any
  737.         ! infl me sleep endparse    ; ABORT ! ABORT ! ABORT !
  738.         ! full stam me add 1 stam me    ; Add one stamina point
  739.         ! full stam me start .recsleep 5
  740.         & endparse
  741.         reply "You are too alert to sleep any more!"
  742.         reply "Your stamina is now @st."
  743.         cure me sleep
  744.         action others "@me has woken up."
  745.         respond "You are now awake."
  746.  
  747.     verb=sleep
  748.     syntax=verb player=me
  749.         syntax none none        ; Reprocess this line
  750.     syntax=verb none
  751.         infl me sleep respond "You already ARE asleep!"
  752.         active .recsleep cancel .recsleep
  753.         inflict me sleep
  754.         start .recsleep 5
  755.         light action others "@me has just fallen asleep."
  756.         reply "You are now asleep."
  757.     -----End-----
  758.  
  759. -------------------------------------------------------------------------------
  760. -------------------------------------------------------------------------------
  761.  
  762.  
  763. [4]  Next Version...
  764.  
  765. [4.1] Conditions
  766.  
  767.     The following conditions will, hopefully, be added by version 0.9
  768.  
  769.     #1    lastplayer    Checks the last player mentioned
  770.     #2    equates        Allow you to perform simple maths/logic.
  771.  
  772.  
  773. [4.2] Actions
  774.  
  775.     The following actions will, hopefully, be added by version 0.9
  776.  
  777.     #1    getfrom
  778.     #2    putin
  779.  
  780.     The following actions are planned for the future:
  781.  
  782.     #1    A means of 'where'ing a player.
  783.     #2    Ability to list another players inventory.
  784.     #3    "Snoop" feature. This will allow one player to see the
  785.         inputs of another. Useful for debugging, since you can
  786.         monitor what players do. It also allows top-ranked
  787.         players (Wizards) to take a hand in inducting novices,
  788.         since they can tell what the novice is TRYING to do.
  789.  
  790.  
  791. [4.3] General features and alterations.
  792.  
  793.     #1    MORE speed (PLEASE)
  794.     #2    Smaller output (data files)
  795.     #3    Separate Daemon parser, to allow indi daemons.
  796.     #4    Mobiles (soon - I hope)
  797.     #5    "All" as a noun...
  798.     #6    Object classes... (That should be fun, hey Rich?)
  799.     #7    Parser will be able to cope with 
  800.             > Plant the plant in the plant pot.
  801.     #8    Containers will be fully operative.
  802.  
  803.  
  804. [4.4] Finally...
  805.  
  806.     There are ALL sorts of changes heading AMUL'S way in the near
  807.     future... I am currently talking, indirectly, with the 4D BBS
  808.     author(s?) (thanks Kulvinder), and am hoping to make AMUL 4D
  809.     compatible... From what I gather Jon is too busy playing Gem
  810.     Stones to fix the bugs in 2.10a7...
  811.  
  812.     One of the main changes coming to AMUL will be two new escape
  813.     codes: @xx and @xy. These two codes are used in multi-user
  814.     interaction. @xx by default gives the players name, @xy will
  815.     give "@me the @mr". But these are ONLY to players who can see
  816.     your player! The table of outputs is something like:
  817.  
  818.     (* indicates if YOUR player is top rank)
  819.  
  820.                                  A c t i o n
  821.  
  822.     when            @xx            @xy
  823.     --------------------------------------------------------------------
  824.     Can See Me        @me            @me the @mr
  825.     SameRoom, Can't see me    Someone nearby        Someone
  826. *    " " " " " " " " " " "     Someone very powerful    Someone very powerful
  827.     DiffRoom, Can't see me    Someone            Someone
  828.  
  829.                                A n n o u n c e
  830.  
  831.     when            @xx            @xy
  832.     --------------------------------------------------------------------
  833.     Can See me        @me            @me the @mr
  834.     SameRoom, Can't see me    A @gn voice nearby    A @gn voice nearby
  835. *    " " " " " " " " " " "   " " " " " " " " "     Nearby, someone very powerful
  836.     Diffroom, Can't see me    In the distance an @gn voice    (<-ditto)
  837.  
  838.     With these features at your command, you should REALLY be able to
  839.     tidy up those multi-user bits, and get a REAL game up and running!
  840.  
  841.     These will be the bulk of the differences between 0.89 and 0.9,
  842.     the NEXT release version!
  843.     
  844.     Right... Enough waffle... GET ADVENTURING!
  845.  
  846. -------------------------------------------------------------------------------
  847. -------------------------------------------------------------------------------
  848.